home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 16 / AMIGAplus Sonderheft 16 (1998)(ICP)(DE)[!].iso / pd / anwendungen / xpk_source / test / testsublibdata.c < prev    next >
C/C++ Source or Header  |  1998-08-27  |  4KB  |  143 lines

  1. #define NAME        "testSubLibData"
  2. #define DISTRIBUTION    "(Freeware) "
  3. #define REVISION    "3"
  4.  
  5. /* Programmheader
  6.  
  7.     Name:        testSubLibData
  8.     Author:        SDI
  9.     Distribution:    Freeware
  10.     Description:    prints data of sub libraries
  11.     Compileropts:    -
  12.     Linkeropts:    -
  13.  
  14.  1.1   06.12.96 : excluded PrintFlag functions
  15.  1.2   15.04.97 : renamed from GetXpkSubLibData
  16.  1.3   05.08.97 : needs no longer UPPER case arguments, now multiple
  17.     arguments
  18. */
  19.  
  20. #include <proto/xpksub.h>
  21. #include <proto/dos.h>
  22. #include <proto/exec.h>
  23. #include <xpk/xpksub.h>
  24. #include "SDI_defines.h"
  25. #include "PrintFlags.c"
  26.  
  27. #define PARAM        "LIBID/A/M"
  28.  
  29. struct Library *XpkSubBase    = 0;
  30. struct RDArgs  *rda        = 0;
  31. ULONG        DosVersion    = 37;
  32.  
  33. UBYTE toup(UBYTE a)
  34. {
  35.   if(a >= 'a' && a <= 'z')
  36.     return (UBYTE) (a+'A'-'a');
  37.   return a;
  38. }
  39.  
  40. void WriteMode(struct XpkMode *, ULONG);
  41.  
  42. void main(void)
  43. {
  44.   STRPTR name = "compressors/xpk____.library";
  45.   STRPTR *str;
  46.  
  47.   if((rda = ReadArgs(PARAM, (LONG *) &str, 0)) && str)
  48.   {
  49.     for(;*str; ++str)
  50.     {
  51.       struct XpkInfo *xi;
  52.       STRPTR str2;
  53.  
  54.       if((name[15] = toup((*str)[0])))
  55.         if((name[16] = toup((*str)[1])))
  56.           if((name[17] = toup((*str)[2])))
  57.             name[18] = toup((*str)[3]);
  58.  
  59.       if((XpkSubBase = OpenLibrary(name, 0)) &&
  60.       (xi = XpksPackerInfo()))
  61.       {
  62.         VPrintf(
  63.         "xi_XpkInfoVersion : %d\n"
  64.         "xi_LibVersion     : %d\n"
  65.         "xi_MasterVersion  : %d\n"
  66.         "xi_ModesVersion   : %d\n"
  67.         "xi_Name           : %s\n"
  68.         "xi_LongName       : %s\n"
  69.         "xi_Description    : %s\n"
  70.         ,xi);
  71.         str2 = (STRPTR) &(xi->xi_ID);
  72.         VPrintf("xi_ID             : '%.4s'\nxi_Flags          : ", &str2);
  73.         {
  74.           ULONG i = xi->xi_Flags;
  75.           PrintFlag(&i, XPKIF_PK_CHUNK,        "XPKIF_PK_CHUNK");
  76.           PrintFlag(&i, XPKIF_PK_STREAM,    "XPKIF_PK_STREAM");
  77.           PrintFlag(&i, XPKIF_PK_ARCHIVE,    "XPKIF_PK_ARCHIVE");
  78.           PrintFlag(&i, XPKIF_UP_CHUNK,        "XPKIF_UP_CHUNK");
  79.           PrintFlag(&i, XPKIF_UP_STREAM,    "XPKIF_UP_STREAM");
  80.           PrintFlag(&i, XPKIF_UP_ARCHIVE,    "XPKIF_UP_ARCHIVE");
  81.           PrintFlag(&i, XPKIF_HOOKIO,        "XPKIF_HOOKIO");
  82.           PrintFlag(&i, XPKIF_CHECKING,        "XPKIF_CHECKING");
  83.           PrintFlag(&i, XPKIF_PREREADHDR,    "XPKIF_PREREADHDR");
  84.           PrintFlag(&i, XPKIF_ENCRYPTION,    "XPKIF_ENCRYPTION");
  85.           PrintFlag(&i, XPKIF_NEEDPASSWD,    "XPKIF_NEEDPASSWD");
  86.           PrintFlag(&i, XPKIF_MODES,        "XPKIF_MODES");
  87.           PrintFlag(&i, XPKIF_LOSSY,        "XPKIF_LOSSY");
  88.           PrintEndFlag(i, xi->xi_Flags);
  89.         }
  90.  
  91.         VPrintf(
  92.         "xi_MaxPkInChunk   : %ld\n"
  93.         "xi_MinPkInChunk   : %ld\n"
  94.         "xi_DefPkInChunk   : %ld\n"
  95.         "xi_PackMsg        : %s\n"
  96.         "xi_UnpackMsg      : %s\n"
  97.         "xi_PackedMsg      : %s\n"
  98.         "xi_UnpackedMsg    : %s\n"
  99.         "xi_DefMode        : %d\n"
  100.         "xi_Pad            : %d\n"
  101.         ,&(xi->xi_MaxPkInChunk));
  102.         VPrintf("xi_Reserved       : %ld,%ld,%ld,%ld,%ld,%ld\n", xi->xi_Reserved);
  103.  
  104.         WriteMode(xi->xi_ModeDesc, 1);
  105.       }
  106.     }
  107.   }
  108.   if(XpkSubBase)
  109.     CloseLibrary(XpkSubBase);
  110.   if(rda)
  111.     FreeArgs(rda);
  112. }
  113.  
  114. void WriteMode(struct XpkMode *m, ULONG num)
  115. {
  116.   STRPTR str = (STRPTR) &(m->xm_Description);
  117.   VPrintf("\nXpkMode No %ld:\n", &num);
  118.  
  119.   VPrintf("xm_Upto           : %ld\nxm_Flags          : ", &(m->xm_Upto));
  120.   {
  121.     ULONG i = m->xm_Flags;
  122.     PrintFlag(&i, XPKMF_A3000SPEED,    "XPKMF_A3000SPEED");
  123.     PrintFlag(&i, XPKMF_PK_NOCPU,    "XPKMF_PK_NOCPU");
  124.     PrintFlag(&i, XPKMF_UP_NOCPU,    "XPKMF_UP_NOCPU");
  125.     PrintEndFlag(i, m->xm_Flags);
  126.   }
  127.  
  128.   VPrintf(
  129.   "xm_PackMemory     : %ld\n"
  130.   "xm_UnpackMemory   : %ld\n"
  131.   "xm_PackSpeed      : %ld\n"
  132.   "xm_UnpackSpeed    : %ld\n"
  133.   "xm_Ratio          : %d\n"
  134.   "xm_ChunkSize      : %d\n"
  135.   , &(m->xm_PackMemory));
  136.  
  137.   VPrintf("xm_Description    : '%.10s'\n", &str);
  138.  
  139.   if(m->xm_Next)
  140.     WriteMode(m->xm_Next, num+1);
  141. }
  142.  
  143.